/* 
 * File:   mthParticulas.h
 * Author: Dr. Juan Carlos Fernandez Toledano
 *
 * Created on 22 de noviembre de 2011, 18:47
 */

#ifndef MTHPARTICULAS_H
#define	MTHPARTICULAS_H

double boundary(double dx, double lx) {
    if(dx>0.5*lx){dx-=lx;}
    if(dx<-0.5*lx) {dx+=lx;}
    return dx;
}

double distancia(particula part1,particula part2, double *dx, double *dy, double *dz, parametros param)
{

    ///Calcula la distancia entre las particulas i y j
    ///Consideramos condiciones de contorno periodicas en el plano xy
    ///pero no en el z donde se encuentran las paredes

    double dis2=0;

    *dx=part2.pos[0]-part1.pos[0];
    *dx=boundary(*dx, param.lbox[0]);

    *dy=part2.pos[1]-part1.pos[1];
    *dy=boundary(*dy, param.lbox[1]);

    *dz=part2.pos[2]-part1.pos[2];
    #ifndef CONFINED
    *dz=boundary(*dz, param.lbox[2]);
    #endif

    dis2=(*dx)*(*dx)+(*dy)*(*dy)+(*dz)*(*dz);
    return sqrt(dis2);
}

#endif	/* MTHPARTICULAS_H */

